package br.skytef.stmanager.beans;

import java.sql.SQLException;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

import br.skytef.stmanager.daos.ControlPlanilhaDAO;
import br.skytef.stmanager.daos.ErroPlanilhaDAO;
import br.skytef.stmanager.daos.GridClienteDAO;
import br.skytef.stmanager.entities.ControlPlanilhasEntity;
import br.skytef.stmanager.entities.ErroPlanilhaEntity;
import br.skytef.stmanager.entities.GridClienteEntity;

@ManagedBean(name="GridClienteBean")
@SessionScoped
public class GridClienteBean {

	public String getMensagem() {return mensagem;}
	public void setMensagem(String mensagem) {this.mensagem = mensagem;}
	private String mensagem = "Nenhum cliente importado!";

	public void setClientes(List<GridClienteEntity> clientes) { this.clientes = clientes;}
	public List<GridClienteEntity> getClientes() {return clientes;}
	private List<GridClienteEntity> clientes;

	public GridClienteEntity getCliente() {	return cliente;	}
	public void setCliente(GridClienteEntity cliente) {	this.cliente = cliente;}
	private GridClienteEntity cliente;

	public int getNumClientes(){return numClientes;}
	public void setNumClientes(int numClientes) {this.numClientes = numClientes;}
	private int numClientes;

	public ControlPlanilhasEntity getControle() {return controle;}
	public void setControle(ControlPlanilhasEntity controle) {this.controle = controle;}
	private ControlPlanilhasEntity controle;

	public List<ControlPlanilhasEntity> getControles() {return controles;}
	public void setControles(List<ControlPlanilhasEntity> controles) {this.controles = controles;}
	private List<ControlPlanilhasEntity> controles;	

	private List <ErroPlanilhaEntity> erro;
	public List<ErroPlanilhaEntity> getErro() {return erro;}
	public void setErro(List<ErroPlanilhaEntity> erro) {this.erro = erro;}

	private int licencaNumLoja=0;
	public int getLicencaNumLoja() {return licencaNumLoja;}
	public void setLicencaNumLoja(int licencaNumLoja) {this.licencaNumLoja = licencaNumLoja;}

	private double totalFaturado=0.0;
	public double getTotalFaturado() {return totalFaturado;}
	public void setTotalFaturado(double totalFaturado) {this.totalFaturado = totalFaturado;}

	private double totalSE=0.0;
	public double getTotalSE() {return totalSE;}
	public void setTotalSE(double totalSE) {this.totalSE = totalSE;}

	private double totalLyra=0.0;
	public double getTotalLyra() {return totalLyra;}
	public void setTotalLyra(double totalLyra) {this.totalLyra = totalLyra;}

	private double totalGSurf=0.0;
	public double getTotalGSurf() {return totalGSurf;}
	public void setTotalGSurf(double totalGSurf) {this.totalGSurf = totalGSurf;}


	private String exibeDivgValor;
	public String getExibeDivgValor() {
		exibeDivgValor = "dlgTitulo ";
		if(!cliente.getTipoDivergencia().equals("divgValor")){
			exibeDivgValor += "oculta";
		}
		return exibeDivgValor;
	}

	private String exibeDivgLojas;
	public String getExibeDivgLojas() {
		exibeDivgLojas = "dlgTitulo ";
		if(!cliente.getTipoDivergencia().equals("divgLoja")){
			exibeDivgLojas += "oculta";
		}
		return exibeDivgLojas;
	}

	public GridClienteBean() throws SQLException {
		super();
		cliente = new GridClienteEntity();
		listarClientes();

	}	
	public String listarClientes() throws SQLException{
		clientes = new GridClienteDAO().listarClientes();
		mensagem = "Nenhum cliente importado!";
		if (clientes == null){
			numClientes = 0;
		}else{
			numClientes = clientes.size();
		}

		listarControles();
		return null;
	}	
	public String listarClientesDLojas() throws SQLException{
		clientes = new GridClienteDAO().listarClientes("divgLoja");
		mensagem = "Nenhum cliente com esta divergência";
		if (clientes == null){
			numClientes = 0;
		}else{
			numClientes = clientes.size();
		}

		listarControles();
		return null;
	}
	public String listarClientesDValores() throws SQLException{
		clientes = new GridClienteDAO().listarClientes("divgValor");
		mensagem = "Nenhum cliente com esta divergência";
		if (clientes == null){
			numClientes = 0;
		}else{
			numClientes = clientes.size();
		}
		listarControles();
		return null;
	}
	public String listarClientesNomalizados() throws SQLException{
		clientes = new GridClienteDAO().listarCoerentes();;
		mensagem = "Nenhum cliente coerente";
		if (clientes == null){
			numClientes = 0;
		}else{
			numClientes = clientes.size();
		}
		listarControles();
		return null;
	}

	public String listarClientesComfat() throws SQLException{
		clientes = new GridClienteDAO().listarClientes("faturamento");
		mensagem = "Nenhum cliente sem faturamento";
		if (clientes == null){
			numClientes = 0;
		}else{
			numClientes = clientes.size();
		}
		listarControles();
		return null;
	}
	public String listarClientesLyra() throws SQLException{
		clientes = new GridClienteDAO().listarClientes("Lyra");
		mensagem = "Nenhum cliente apenas Lyra";
		if (clientes == null){
			numClientes = 0;
		}else{
			numClientes = clientes.size();
		}
		listarControles();
		return null;
	}
	public String listarClientesGSurf() throws SQLException{
		clientes = new GridClienteDAO().listarClientes("GSurf");
		mensagem = "Nenhum cliente apenas GSurf";
		if (clientes == null){
			numClientes = 0;
		}else{
			numClientes = clientes.size();
		}
		listarControles();
		return null;
	}
	public String listarClientesSE() throws SQLException{
		clientes = new GridClienteDAO().listarClientes("SE");
		mensagem = "Nenhum cliente apenas Software Express";
		if (clientes == null){
			numClientes = 0;
		}else{
			numClientes = clientes.size();
		}
		listarControles();
		return null;
	}
	
	public void listarControles() throws SQLException{

		controles = new ControlPlanilhaDAO().listar();
		for(int i=1; i<=5;i++){
			ControlPlanilhasEntity control = new ControlPlanilhaDAO().buscar(i);
			if(i == 1 && control != null)
				licencaNumLoja = control.getLicencaNumLoja();
			if(i == 2 && control != null)
				totalFaturado = control.getTotalFaturado();
			if(i == 3 && control != null)
				totalLyra = control.getTotalLyra();
			if(i == 4 && control != null)
				totalGSurf = control.getTotalGSurf();
			if(i == 5 && control != null)
				totalSE = control.getTotalSE();
		}
		erro = new ErroPlanilhaDAO().listar();
	}
	public void listarErros() throws SQLException{
		ControlPlanilhasEntity planErrada = new ControlPlanilhaDAO().buscar(controle.getNomePlanilha());
		erro = new ErroPlanilhaDAO().listarPorPlan(planErrada.getIdcontrolPlanilha());
	}

}
